A Programmable Logic Device is an electronic component used to build reconfigurable digital circuits. Unlike a logic gate, which has a fixed function, a PLD has an undefined function at the time of manufacture, and it must be programmed before the PLD can be used in a circuit. PLDs use routing multiplexers with static configurations to implement programmable routing structures. The routing structures often include chained multiplexing stages, where the outputs of one stage are connected to the inputs of the next stage. The chained multiplexing stages, also called multi-stage multiplexers, enable the optimization in size and efficiency of the circuitry in the PLD.
PLDs contain logic elements (LE) that perform basic logic functions on the inputs to the LEs and communicate the results via the output lines leaving the LEs. A group of LEs are combined into a Logic Array Block (LAB). Typically, LABs contain routing lines and multiplexers to provide the inputs to the LEs, and to communicate the outputs from the LEs to other LEs inside the LAB or to other entities outside the LAB. Often, the interconnections between the different modules are designed in advance creating static multiplexing routes. Because these routing connections are static, the multiplexers merely act as routing mechanisms and cannot be used as multiplexers in user designs.
PLD configurations are stored as a bit sequence and are loaded during the programming phase of the PLD. Because the bits are static, testing the functionality of the different multiplexers statically configured requires loading different bit configurations and testing each configuration. Loading configurations is a relatively time consuming process that slows down testing.
It is in this context that embodiments of the invention arise.